UNICEF is focused on improving global health outcomes for youth. This report presents key indicators like Vitamin A coverage and mortality rates for adolescents (15β19), along with GDP per capita data to explore global health inequalities.
π Visualisation 1: World Map
πΊοΈ Vitamin A Supplementation Coverage β Interactive World Map
This interactive map displays the global coverage of Vitamin A supplementation in children for different years. It is based on UNICEF data and provides an insightful spatial view of how different countries are progressing in public health initiatives.
The map uses shapefiles to represent country borders.
Countries are color-coded based on their Vitamin A coverage percentage.
The dropdown menu allows users to select a specific year, enabling year-over-year comparison.
The color scale ranges from light orange (low coverage) to dark orange (high coverage), helping to visually distinguish between low- and high-coverage regions.
π Key Insights:
In Sub-Saharan Africa, vitamin A supplementation coverage has shown significant improvement over the past decade β particularly in countries like Burkina Faso, Malawi, and Tanzania, where coverage rates have consistently exceeded 90% in recent years.
This increase has been linked to enhanced public health campaigns, better healthcare infrastructure, and international support.
As a result, child mortality rates have declined, since vitamin A plays a crucial role in reducing the risk of infections and improving overall child health.
Continued efforts are essential to ensure universal coverage and further reduce child mortality in vulnerable populations.
Code
import plotly.express as pximport pandas as pdimport plotly.io as pio# Set the renderer to 'notebook' to display the plot within the notebookpio.renderers.default ='notebook'# Load the datadata = pd.read_csv('data/unicef_indicator_1_cleaned.csv')# Filter out missing datadata = data.dropna(subset=['obs_value'])# Create the choropleth mapfig = px.choropleth( data, locations='alpha_3_code', # Country code column color='obs_value', # The variable to visualize hover_name='country', # Display country name on hover hover_data={'alpha_3_code': False}, # Remove country code from hover color_continuous_scale='YlOrBr', # Yellow-Orange-Brown color scale labels={'obs_value': 'Vitamin A Coverage (%)'}, title="Global Vitamin A Coverage by Country")# Beautify the layoutfig.update_layout( title=dict( text="π Global Vitamin A Coverage by Country", font=dict(size=22, family='Arial Black'), x=0.5# Center title ), geo=dict( showframe=False, showcoastlines=True, coastlinecolor="gray", projection_type="equirectangular", # Use a more suitable projection showland=True, landcolor="rgb(240, 240, 240)", # Light land color showocean=True, oceancolor="rgb(220, 230, 250)", # Light ocean color bgcolor="white", lakecolor="rgb(200, 220, 255)", # Light lake color showlakes=True, showcountries=True, countrycolor="gray"# Lighter country borders ), margin=dict(l=20, r=20, t=70, b=20), width=1100, # Increased width height=650, # Increased height coloraxis_colorbar=dict( title=dict( text='Coverage (%)', font=dict(size=14, color='black') ), tickfont=dict(size=12, color='black'), ticks='outside', tickcolor='black', lenmode='fraction',len=0.75, outlinecolor='black', outlinewidth=1 ), paper_bgcolor='white')# Show the mapfig.show()
Analysis of Adolescent Mortality Rate and GDP per Capita by Country
Graph: Adolescent Mortality Rate and GDP per Capita by Country
Below is a dual-axis graph depicting the relationship between Adolescent Mortality Rate and GDP per Capita across different countries. The Adolescent Mortality Rate is shown as a bar chart on the left y-axis, and the GDP per Capita is displayed as a line graph on the right y-axis.
Insights
1. Correlation between Low GDP per Capita and High Adolescent Mortality
Low GDP per capita and high inflation often correlate with increased adolescent mortality. In countries with lower economic development, resources for healthcare and public services are more limited, leading to higher rates of adolescent death.
2. Impact of Limited Healthcare Infrastructure
Low GDP per capita frequently leads to limited public health spending, which negatively affects the availability and quality of healthcare services. As a result, adolescent populations in these countries face inadequate prevention, diagnosis, and treatment for diseases, which increases their mortality rates.
Note: The graph and analysis presented above aim to help in understanding the broader global challenges concerning adolescent mortality and the underlying factors such as economic conditions and public health infrastructure.
Code
# π Import libraries import pandas as pdimport plotly.graph_objects as goimport plotly.express as px# π₯ Load the datadf = pd.read_csv('data/Sheet 2_data.csv')# π§Ή Clean the datadf = df.dropna(subset=['Country', 'Adolescent Mortality Rate', 'Gdp Per Capita']) # Remove rows without required columns# π Sort by Adolescent Mortality Rate descending (from high to low)df = df.sort_values(by='Adolescent Mortality Rate', ascending=False)# π¨ Create a color scale for the bars based on mortality rate (green to red)colors = px.colors.sample_colorscale('RdYlGn_r', (df['Adolescent Mortality Rate'] - df['Adolescent Mortality Rate'].min()) / (df['Adolescent Mortality Rate'].max() - df['Adolescent Mortality Rate'].min()))# π Create the figurefig = go.Figure()# 1οΈβ£ Bar trace for Adolescent Mortality Rate (sorted from high to low)fig.add_trace( go.Bar( x=df['Country'], y=df['Adolescent Mortality Rate'], name='Adolescent Mortality Rate', marker_color=colors, yaxis='y1'# Link the bar plot to the primary y-axis ))# 2οΈβ£ Line trace for GDP per Capita (sorted from low to high)fig.add_trace( go.Scatter( x=df['Country'], y=df['Gdp Per Capita'], name='GDP per Capita', mode='lines', # Line graph with markers line=dict(color='crimson', width=2), # Color and width of the line yaxis='y2'# Link the line plot to the secondary y-axis ))# π οΈ Layout settingsfig.update_layout( title='Adolescent Mortality Rate and GDP per Capita by Country', width=1400, height=700, xaxis=dict( title='Country', tickangle=-45, tickfont_size=10 ), yaxis=dict( title='Adolescent Mortality Rate', tickfont_size=12 ), yaxis2=dict( title='GDP per Capita', tickfont_size=12, overlaying='y', # Share the same x-axis side='right'# Place the secondary y-axis on the right ), margin=dict(l=50, r=50, t=80, b=150), plot_bgcolor='white')# π’ Display the plot inline (for Jupyter environments)fig.show()
π Vitamin A Coverage vs GDP per Capita β Scatterplot with Regression Line
This scatterplot visualizes the relationship between Vitamin A supplementation coverage and GDP per capita across countries. Each point on the graph represents a single country for a given year (typically the most recent common year across datasets).
The x-axis shows GDP per capita (in constant 2015 US$).
The y-axis shows the Vitamin A supplementation coverage percentage.
A linear regression line has been added to show the general trend.
π Key Insights:
Countries with higher GDP per capita tend to have higher Vitamin A coverage, indicating a positive correlation between economic prosperity and public health intervention coverage.
The spread of points also reveals inequities across countries, with low-income nations often showing lower coverage rates.
π Additional Context:
In low-income countries, adolescent boys often have higher mortality rates compared to girls.
This is partly due to riskier behaviors such as substance abuse, violence, and accidents, which are more prevalent among males in this age group.
Low GDP per capita often correlates with limited public health spending, which affects the availability and quality of healthcare services. This can lead to higher adolescent mortality rates due to inadequate prevention, diagnosis, and treatment of diseases.
With a GDP per capita ranging from around $300 to $580 over the years, Afghanistan likely faces high adolescent mortality rates due to ongoing conflict, limited healthcare infrastructure, and high rates of infectious diseases.
Although not a low-income country, Albaniaβs GDP per capita has been increasing, which may contribute to better health outcomes for adolescents compared to lower-income countries.
Many countries in this region have low GDP per capita and high adolescent mortality rates, emphasizing the critical link between economic development and adolescent health.
Code
import pandas as pdimport plotly.express as pximport plotly.graph_objects as go# Load the datadf = pd.read_csv('data/Sheet 4_data.csv')# Filter missing valuesdf_filtered = df.dropna(subset=['Gdp Per Capita', 'Adolescent Mortality Rate'])# Create base scatterplotfig = px.scatter( df_filtered, x='Gdp Per Capita', y='Adolescent Mortality Rate', title='Adolescent Mortality Rate vs GDP per Capita', labels={'Gdp Per Capita': 'GDP per Capita (USD)','Adolescent Mortality Rate': 'Adolescent Mortality Rate (%)' }, trendline="ols", hover_name='Country', color='Country', opacity=0.7)# Calculate mean and medianmean_val = df_filtered['Adolescent Mortality Rate'].mean()median_val = df_filtered['Adolescent Mortality Rate'].median()# Add mean and median linesfig.add_hline( y=mean_val, line_dash='solid', line_color='lightblue', annotation_text='Mean', annotation_position='top left')fig.add_hline( y=median_val, line_dash='solid', line_color='lightgreen', annotation_text='Median', annotation_position='bottom left')# Beautify layoutfig.update_layout( template='plotly_white', xaxis_title_font=dict(size=14, family='Arial'), yaxis_title_font=dict(size=14, family='Arial'), title_font=dict(size=18, family='Arial'), hoverlabel=dict( bgcolor="white", font_size=11, font_family="Arial" ))# Optional: log scale for GDPfig.update_xaxes(type='log')# Customize markersfig.update_traces(marker=dict(size=8, line=dict(width=1, color='DarkSlateGrey')))fig.show()
π Global Vitamin A Supplementation Coverage Over Time
This line graph visualizes the average global vitamin A supplementation coverage from 2000 to 2023. The data is sourced from UNICEF and represents the percentage of children receiving vitamin A supplements across different countries. The coverage is calculated as a global average for each year.
Key Trends:
Initial Increase: Coverage generally increased between 2000 and the late 2000s.
Peak Coverage: The highest average coverage was observed around 2010-2014, reaching above 70%.
Subsequent Decline: After 2015, there appears to be a decline in global average coverage.
Recent Fluctuations: The coverage shows some fluctuations in the most recent years, with a notable dip around 2020 and a partial recovery afterward.
Possible Interpretations:
The trends might reflect varying levels of investment, changes in health policies, disruptions due to global events (such as the COVID-19 pandemic affecting supply chains and access to healthcare), or shifts in data collection methodologies. A more in-depth analysis would be required to determine the exact causes behind these trends.
Code
import plotly.express as pximport pandas as pdimport plotly.io as pio# Set the renderer to 'notebook'pio.renderers.default ='notebook'def create_and_show_plot():# Load the data data = pd.read_csv('data/unicef_indicator_1_cleaned.csv')# Data preprocessing data = data.rename(columns={'time_period': 'year', 'obs_value': 'coverage'}) data['year'] = pd.to_numeric(data['year'], errors='coerce') data['coverage'] = pd.to_numeric(data['coverage'], errors='coerce') data = data.dropna(subset=['year', 'coverage'])# Group data by year time_series = data.groupby('year')['coverage'].mean().reset_index()# Create the line plot fig = px.line( time_series, x='year', y='coverage', title='π Global Vitamin A Supplementation Coverage (Avg %)', labels={'year': 'Year', 'coverage': 'Average Coverage (%)'}, markers=True )# Customize the plot fig.update_traces( line=dict(width=4, color='green'), marker=dict(size=8, color='seagreen', line=dict(width=0.5, color='white')) ) fig.update_layout( template='plotly_white', font=dict(size=16), title_font_size=24, title_x=0.5, hovermode='x unified', xaxis=dict(showgrid=False), yaxis=dict(title='Coverage (%)'), margin=dict(t=80, l=40, r=40, b=40) )# Display the plot fig.show()# Call the function to render the plotcreate_and_show_plot()